cd "/Users/Desktop/stata/"

*     ***************************************************************** *;
*     ***************************************************************** *;
*       File-Name:      sampling_normal.do                              *;
*       Date:           		                                        *;
*       Author:         Ben Ferland                                     *;
*       Purpose:         Dist. d'échantillonnage population normale		*;
*       Input File:      n.a			                                *;
*       Output File:    group5/10/40/100                                *;
*       Data Output:    n.a					                            *;
*       Previous file:  n.a			                                    *;
*       Machine:        MacBook Air Ben                                 *;
*                                                                       *;
*       Details: créer une population de 10000obs. moyenne50,  			*;
*		écart-type25, tirée au hasard 100 groupes de 5, 10, 40, 100     *;
*     ****************************************************************  *;
*     ****************************************************************  *;

set more off

*     ****************************************************************  *;
*     Distribution d'échantillonnage d'une population~normale           *;
*		détails groupes de 10, 40 et 100 répondants
*     ****************************************************************  *;
set seed 1357

// Créer une population ayant 10000 observations (lignes/personnes)
set obs 10000

// Créer une varible ayant une moyenne de 50 et un écart-type de 25. Cette variable représente les propriétés de notre population:
// nous avons une population de 10000 personnes où l'âge (par exemple) suit une distribution normale, avec une moyenne de 50 ans et un écart-type de 25.
gen population= rnormal(50, 25)
// vérifier avec hist population, normal kdensity

// Échantilloner des groupes de 10 répondants (donc 1000 groupes)
gen rdm=runiform(0,1)
egen group=cut(rdm), group(1000)
replace group=group+1
//de ces 1000 groupes de 10 répondants, nous en gardons 100 afin de pouvoir comparer avec les prochaines distributions d'échantillonnage
keep if group<=100

// Calculons la moyenne de chacun de ces groupes
egen mean = mean(population), by(group)
mean population, over(group)
sort group
by group: sum population

// Puisque nous avons plusieurs observations par groupe, nous garderons uniquement une observation par groupe
sort group
by group: gen ordre=_n
keep if ordre==1

// Faisons un histogramme de ces moyennes 
hist mean, normal kdensity xlabel(30(5)70)
graph export "group10.pdf", replace

// Examinons les statistiques descriptives de cette distribution d'échantillonnage.
sum mean,det
mean mean
clear all


***************************************************************************
***Répétons les opérations précédentes pour des groupes de 40 répondants***
***************************************************************************

set seed 12356

set obs 10000


gen population= rnormal(50, 25)

// Échantilloner des groupes de 40 répondants (donc 250 groupes)
gen rdm=runiform(0,1)
egen group=cut(rdm), group(250)
replace group=group+1
//de ces 250 groupes de 40 répondants, nous en gardons 100 afin de pouvoir comparer avec les autres distributions d'échantillonnage
keep if group<=100

egen mean = mean(population), by(group)
mean population, over(group)

sort group
by group: gen ordre=_n
keep if ordre==1

hist mean, normal kdensity xlabel(30(5)70)
graph export "group40.pdf", replace

sum mean,det
mean mean
clear all



******************************************************************************
*** Répétons les opérations précédentes pour des groupes de 100 répondants ***
******************************************************************************

set seed 12356

set obs 10000


gen population= rnormal(50, 25)

// Échantilloner des groupes de 100 répondants (donc 100 groupes)
gen rdm=runiform(0,1)
egen group=cut(rdm), group(100)
replace group=group+1
//de ces 100 groupes de 100 répondants, nous en gardons 100 (donc tous) afin de pouvoir comparer avec les autres distributions d'échantillonnage

egen mean = mean(population), by(group)
mean population, over(group)

sort group
by group: gen ordre=_n
keep if ordre==1

hist mean, normal kdensity xlabel(30(5)70)
graph export "group100.pdf", replace

sum mean,det
mean mean
clear all


******************************************************************************
*** Répétons les opérations précédentes pour des groupes de 5 répondants ***
******************************************************************************

set seed 12356

set obs 10000


gen population= rnormal(50, 25)

// Échantilloner des groupes de 5 répondants (donc 2000 groupes)
gen rdm=runiform(0,1)
egen group=cut(rdm), group(2000)
replace group=group+1
//de ces 2000 groupes de 5 répondants, nous en gardons 100 (donc tous) afin de pouvoir comparer avec les autres distributions d'échantillonnage
keep if group<=100

egen mean = mean(population), by(group)
mean population, over(group)


sort group
by group: gen ordre=_n
keep if ordre==1

hist mean, normal kdensity xlabel(30(5)70)
graph export "group5.pdf", replace

sum mean,det
mean mean
clear all

